//
// Created by zx208 on 2024/10/16.
//

//对于一个线性表，设计把所有奇数移到所有偶数前边的算法（要求时间最少，辅助空间最少）

#include "../SequenceList.h"


Status Moving_Odd_SL(SqList *L){
    // 和正负整数重排差不多 使用左右指针来进行交换
    int left = 0, right = L->length-1, temp;
    while(left < right){
        while(left < right && L->elem[left] % 2 != 0) left++;
        while(left < right && L->elem[right] % 2 == 0) right--;
        temp = L->elem[left], L->elem[left] = L->elem[right], L->elem[right] = temp;
    }
    return OK;
}

int main(void){
    SqList L;
    int a[] = {1,2,3,4,5,6,7};
    L.elem = a;
    L.length = sizeof a / sizeof( int);
    Moving_Odd_SL(&L);
    for (int i = 0; i < L.length; ++i) {
        printf("%d ", L.elem[i]);
    }
    return 0;
}